package com.example.rayal.satelitemenu.view;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;

import com.example.royal.satelitemenu.R;

/**
 * Created by Royal on 2016/1/23.
 */
public class MyView  extends View {
    private boolean mIsTrue = false;
    private int mSize;
    public MyView(Context context) {
        this(context, null);
    }

    public MyView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        /**获取定义的属性集合
         *返回一个set集合，其中是定义在attr中的属性
         * 使用结束后调用recycle（）回收
         * 确实定义的属性的属性值的四种方法
         * 1、取所返回的AttributeSet中的属性值
         * 2、AttributeSet中指定的style资源中定义的属性值（named “style”）
         * 3、默认的style defStyleAttr中定义的属性值
         * 4、主题中定义的默认值
         * @param AttributeSet set 定义属性值的集合
         * @param int[] attrs 需要获取属性的控件属性id
         * @param int defStyleAttr 当前主题的一个默认属性集合
         * @param int defStyleRes style资源中默认属性集合，仅在defStyleAttr为0时起作用
         */
        TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView,defStyleAttr, 0);
        /**
         * 取属性值
         * @param 属性的id
         * @param 默认值
         */
        mIsTrue = a.getBoolean(R.styleable.MyView_isTrue, false);
        //获取100dp的默认值对应的px值
        int defaultSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
        mSize = defaultSize;
        mSize = (int) a.getDimension(R.styleable.MyView_size, defaultSize);

        Log.i("TAG", "mIsTrue = " + mIsTrue);
        Log.i("TAG", "mSize = " + mSize);
    }
}
